package com.mazaiting.generator.converter;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mazaiting.generator.domain.entity.ProjectEntity;
import com.mazaiting.generator.domain.form.ProjectForm;
import com.mazaiting.generator.domain.vo.ProjectVO;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy;

/**
 * 工程信息转换器
 *
 * @author mazaiting
 * @create_time 2022/9/20 22:58
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface IProjectConverter {
    /**
     * 实体分页数据转 VO 分页数据
     * @param entityPage 实体分页
     * @return VO 分页
     */
    Page<ProjectVO> entity2VO(Page<ProjectEntity> entityPage);

    /**
     * 实体 转 VO
     * @param entity 实体
     * @return VO
     */
    ProjectVO entity2VO(ProjectEntity entity);

    /**
     * 表单转实体
     * @param projectForm 表单
     * @return 实体
     */
    ProjectEntity form2Entity(ProjectForm projectForm);

    /**
     * 表单转实体
     * @param form 表单
     * @param entity 实体
     */
    void form2Entity(ProjectForm form, @MappingTarget ProjectEntity entity);

}
